home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / linux / sunrpc / timer.h < prev    next >
C/C++ Source or Header  |  2005-10-13  |  1KB  |  50 lines

  1. /*
  2.  *  linux/include/linux/sunrpc/timer.h
  3.  *
  4.  *  Declarations for the RPC transport timer.
  5.  *
  6.  *  Copyright (C) 2002 Trond Myklebust <trond.myklebust@fys.uio.no>
  7.  */
  8.  
  9. #ifndef _LINUX_SUNRPC_TIMER_H
  10. #define _LINUX_SUNRPC_TIMER_H
  11.  
  12. #include <asm/atomic.h>
  13.  
  14. struct rpc_rtt {
  15.     unsigned long timeo;    /* default timeout value */
  16.     unsigned long srtt[5];    /* smoothed round trip time << 3 */
  17.     unsigned long sdrtt[5];    /* smoothed medium deviation of RTT */
  18.     int ntimeouts[5];    /* Number of timeouts for the last request */
  19. };
  20.  
  21.  
  22. extern void rpc_init_rtt(struct rpc_rtt *rt, unsigned long timeo);
  23. extern void rpc_update_rtt(struct rpc_rtt *rt, unsigned timer, long m);
  24. extern unsigned long rpc_calc_rto(struct rpc_rtt *rt, unsigned timer);
  25.  
  26. static inline void rpc_set_timeo(struct rpc_rtt *rt, int timer, int ntimeo)
  27. {
  28.     int *t;
  29.     if (!timer)
  30.         return;
  31.     t = &rt->ntimeouts[timer-1];
  32.     if (ntimeo < *t) {
  33.         if (*t > 0)
  34.             (*t)--;
  35.     } else {
  36.         if (ntimeo > 8)
  37.             ntimeo = 8;
  38.         *t = ntimeo;
  39.     }
  40. }
  41.  
  42. static inline int rpc_ntimeo(struct rpc_rtt *rt, int timer)
  43. {
  44.     if (!timer)
  45.         return 0;
  46.     return rt->ntimeouts[timer-1];
  47. }
  48.  
  49. #endif /* _LINUX_SUNRPC_TIMER_H */
  50.